-
Notifications
You must be signed in to change notification settings - Fork 175
CI: Update Elixir & OTP build matrix, support old OTP versions #200
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
👋 @michalmuskala, would you please review this change when you have a moment. |
|
Sorry for the delay. Looks like there's an issue with the chosen OTP/Elixir version pair. In general the pattern we tried to follow is to test every dot Elixir release with the latest Erlang it supports - if we end up with some Erlang version not covered we bump down one of the previous Elixir releases. That said, it gets out of sync. Feel free to make bigger changes to this to cover all the missing Elixir releases, I'd be happy to merge. Thank you for looking into this! |
|
No worries and thank you for the guidance. I'll take another approach to the work that I've done to date. |
Recent versions of Ubuntu have different versions of gcc and g++ available, which neccesitates configuring versions per OS. See GitHub's release notes for their runner images: - https://github.com/actions/runner-images/blob/ubuntu22/20250427.1/images/ubuntu/Ubuntu2204-Readme.md - https://github.com/actions/runner-images/blob/ubuntu24/20250427.1/images/ubuntu/Ubuntu2404-Readme.md
e250d3c to
c07cd28
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
.github/workflows/ci.yml
Outdated
| include: | ||
| - elixir: 1.4.x | ||
| otp: 20 | ||
| os: ubuntu-20.04 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This runner image has been retired and can't be used by a GitHub Actions workflow job any more.
This is a scheduled Ubuntu 20.04 retirement. Ubuntu 20.04 LTS runner will be removed on 2025-04-15. For more details, see https://github.com/actions/runner-images/issues/11101
The implications of this are that any Elixir & OTP pairs which used ubuntu-20.04 as the runner image will break as the erlef/setup-beam action uses Hex.pm's OTP builds as the source of available builds. This means that OTP versions 20.x - 24.1 inclusive aren't available for download and installation.
I'll see if I can find a replacement image or another approach which enables keeping these older OTP versions in the build matrix.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No luck in finding an immediate replacement for this deprecated image. However, I have successfully tested that OTP versions built for Ubuntu 20.04 work fine on Ubuntu 22.04. I plan to propose that Hex.pm's builder be extended to account for these deprecations of GitHub's ubuntu-20.04 runner image.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I ended up resolving this problem by creating a similar job in 71212eb and slicing the parts of the build matrix which depend on Ubuntu 20.04 in a container instead. It will make the workflow definition a little more cumbersome to maintain but the older Elixir & OTP pairs are unlikely to change.
|
@michalmuskala: GitHub are about to retire the I'm happy to remove the affected Elixir & OTP version pairs from the build matrix but you may wish to keep testing against those older releases. Let me know your thoughts when you can? |
GitHub retired the `ubuntu-20.04` runner image last month. These changes add a new job which runs the Elixir & OTP pairs which need that Ubuntu version in a container which uses the official Docker image instead. A sample error from the existing GitHub workflow job follows: ``` This is a scheduled Ubuntu 20.04 retirement. Ubuntu 20.04 LTS runner will be removed on 2025-04-15. For more details, see actions/runner-images#11101 ```
54d2523 to
71212eb
Compare
|
👋 @michalmuskala: These changes are ready for your review again and should be mergable. |
|
👋 @michalmuskala, would you please review this change when you have a moment. |
|
👋 @michalmuskala, a gentle nudge to review these changes. |
|
🛎️ Ping? |
💁 These changes update the the matrix of versions used in continuous integration to include:
I've followed the existing pattern of incrementing the Elixir minor version in lockstep with the most recent major version of Erlang/OTP that's supported by that Elixir version.
ubuntu-20.04as a runner image which can't be used by a GitHub Actions workflow job any more.To minimise the size of changes I've split the original test job into 2 separate jobs: